Blokkjeden Ethereum gir rikelig med stoff til mareritt
(Publisert i spalten Menneske og maskin i Morgenbladet, 30. mars 2022.)
Det finnes to typer programmerere: De som har så stor tro på sitt eget fagfelt at de vil la programvare styre så mye som mulig, og de som synes det er et mirakel når programmer fungerer, så la oss for guds skyld ikke gi dem enda mer makt enn i dag. Den første gruppen kan ikke fatte at vi ikke har innført heldigitale stortingsvalg ennå. Den andre betrakter programvare gjennom brillene til de H.P. Lovecraft-inspirerte bøkene til science fiction-forfatteren Charles Stross, hvor programmering og demonologi fremstilles som to sider av samme sak.
Vi som tilhører sistnevnte gruppe finner rikelig med stoff til marerittene våre i blokkjeden Ethereum. Der Bitcoin og bitcoinklonene nøyer seg med å være databaser for mynttransaksjoner, er Ethereum den største av flere løsninger som støtter smarte kontrakter.
Skyte seg selv i foten
Begrepet er misvisende. I sin opprinnelige akademiske form var en smart kontrakt ment å være et program som kunne erstatte juridiske kontrakter. Jurister har egen måte å betrakte verden på hvor rettigheter og plikter mellom aktører griper inn i hverandre nesten som en maskin. Tenk om alt dette kunne håndheves programmatisk? De som tenkte på dette så for seg at man burde skrive smarte kontrakter i et eget programmeringsspråk som var egnet for juridiske formål, for å unngå programmeringsfeil.
Programmeringsspråk kan være generelle eller spesialiserte. De generelle kan brukes til hva som helst, mens de spesialiserte er særlig godt egnet til én bestemt oppgave og gjerne kommer med begrensninger som hindrer utvikleren i å skyte seg selv i foten, som det heter på fagspråket. For ønsker du egentlig å kunne gjøre hva som helst i en kontrakt? Nei, du ønsker nok heller å sikre at den er fri for uklarheter og smutthull. Det er umulig å oppnå begge deler samtidig.
De som designet Ethereum, valgte i stedet å bygge det på noe som ligner det populære genrelle språket JavaScript, som på ingen måte er designet for juridiske kontrakter. Fordelen er at det dermed er lett for nye utviklere å bli produktive i Ethereum og at du kan bruke det til å gjøre hva som helst.
Det finnes som sagt to typer programmerere: De som leser det foregående avsnittet og tenker "oi, så spennende", og de som grøsser fordi de skjønner hvor dette er på vei.
Programkode på blokkjeden
Så hva er smarte kontrakter? Blokkjeder er databaser. Ethereum er en database som inneholder programkode og tilstandsdata. Når nye transaksjoner legges til blokkjeden, kjøres programmet, altså den smarte kontrakten, slik at tilstandsdataene endrer seg. All programvare har tilstandsdata. Forskjellen mellom programmet du leser denne teksten med og smarte kontrakter er at dataene disse jobber mot representererer verdier for millioner og milliarder av kroner.
NFT-er, DAO-er, desentralisert finans, de fleste nye kryptomynter, alle blestbegrepene risikokapitalister i Silicon Valley nå prøver å samle under fellesbetegnelsen "Web3" - alt dette styres av smarte kontrakter på Ethereum og lignende blokkjeder.
Vi kan flire av at noen betaler millioner for en databasereferanse til en URL som peker på bildet av en ape som kjeder seg, men ambisjonene bak Web3 er til å miste pusten av. Alle aspekter av livene våre skal gjøres om til kuponger på en blokkjede. Arbeidsgiveren vår vil i fremtiden bli en desentralisert organisasjon på blokkjeden. Du vil ikke lenger trenge en CV, for alle bragder du har oppnådd som arbeidstaker har blitt lagret på blokkjeden. Alt dette styrt av smarte kontrakter.
Allerede i dag flytter smarte kontrakter mynter og kuponger for enorme verdier i et blokkjedebasert finanssystem som har blitt så komplekst at det har urovekkende likheter med det tradisjonelle finanssystemet i årene før finanskrisen. Samtidig er de smarte kontraktene og de andre applikasjonene i økosystemet fulle av feil. Feilene kan utnyttes av hackere. Bloggen Web3 is going just great legger ut daglige nyheter om tyverier og svindler i størrelsesorden mange millioner dollar.
Mørk skog
Smarte kontrakter inneholder feil fordi programmering er vanskelig. All kode inneholder feil. Blokkjeder har i tillegg to unike egenskaper som gjør det ekstra vanskelig å rette opp i programmeringsfeil. Den første er at du ikke kan endre på en kontrakt når den først har blitt lagt på blokkjeden. Den andre er at selv om du oppdager feilen før tyven gjør det, finnes det ingen trygg måte å hente ut verdiene dine på. Transaksjoner mot blokkjeden er offentlige, og blir ikke utført med en gang. Transaksjonen du oppretter for å redde verdiene dine, er et signal til bot-er om at her er det et hull som dere kan utnytte. Disse kan så registrere sin egen transaksjon som utføres før din, og utnytte hullet du har gjort dem oppmerksom på.
Sagt på en enklere måte: Du har mistet lommeboka di på gata utenfor tyverilaugets hovedkvarter. Den inneholder en million kroner. Ingen har sett at den ligger der ennå, men hvis du begynner å bevege deg mot den, vil en av de førti tyvene rundt deg se hva du gjør og prøve å ta den de også. De er raskere og sterkere enn deg. Lykke til.
Ethereum-utviklerne Dan Robinson og Georgios Konstantopoulos omtaler blokkjeden som en mørk skog, etter en science fiction-roman som foregår på en verden hvor rovdyrene er så overlegne at bare det å bli oppdaget av dem er nok til å gå en sikker død i møte.
Svindelkontrakter
Andre ganger er det utviklerne bak den smarte kontrakten som er rovdyrene. Hvordan vet du at kontrakten du investerer i gjør det den sier at den gjør? Ja, da må du lære deg å lese kode. Men noen av de største svindlene i kryptomarkedet har blitt utført med hjelp av smarte kontrakter som har blitt gransket av sikkerhetseksperter, men som likevel viser seg å være ondsinnete. Den morsomste var mynten du kunne kjøpe, men som det var umulig å selge, som en forhekset gjenstand i et rollespill.
Som programmerer er jeg fascinert av detaljene i disse angrepene. Å følge med på temaet er som å våkne opp til et daglig Poirot-mysterie. "Oj oj, jeg lurer på hvordan landsbypresten ble drept denne gangen!" Men hvis jeg selv hadde verdier i blokkjeder, ville jeg kaldsvettet meg gjennom nettene.
I dag er dette en hobby for teknologer, liberalister og naive investorer. I framtiden, hevder web3-evangelistene, skal vi alle overlate livene våre til smarte kontrakter. Da vil ikke sikkerhetsrutinene du er vant med fra vanlig nettbruk være nok. Du vil være sårbar for nye angrep du ikke aner hvordan du skal beskytte deg mot. Ikke spør meg om hjelp, for jeg kommer til å ha flyttet til en øde hytte. Jo mer av livene og eiendelene våre vi legger over på blokkjeden, jo mer gjør vi oss selv til byttedyr i den mørke skogen.